Security News
RubyGems.org Adds New Maintainer Role
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
@storybook/channels
Advanced tools
[![Build Status on CircleCI](https://circleci.com/gh/storybooks/storybook.svg?style=shield)](https://circleci.com/gh/storybooks/storybook) [![CodeFactor](https://www.codefactor.io/repository/github/storybooks/storybook/badge)](https://www.codefactor.io/re
The @storybook/channels package is used within the Storybook ecosystem to facilitate communication between different parts of the Storybook environment, such as between the Storybook UI and the preview iframe where stories are rendered. It provides an event-driven channel that can be used for bidirectional communication.
Creating a channel
This code sample demonstrates how to create a new channel using the @storybook/channels package. The 'transport' object would be an implementation of the transport layer that the channel will use to send and receive messages.
import Channel from '@storybook/channels';
const channel = new Channel({ transport });
Sending a message
This code sample shows how to send a message with an event name and associated data through the channel. Other parts of the application can listen for 'eventName' and react accordingly.
channel.emit('eventName', eventData);
Listening for a message
This code sample illustrates how to listen for messages on the channel. The 'eventHandler' function will be called with the event data whenever a message with 'eventName' is emitted.
channel.on('eventName', eventHandler);
Removing a listener
This code sample shows how to remove a previously added event listener from the channel. This is useful for cleanup and preventing memory leaks.
channel.removeListener('eventName', eventHandler);
EventEmitter3 is a high-performance event emitter. While it provides similar event-driven communication capabilities, it does not include a transport layer for communication between different environments like @storybook/channels does.
Mitt is a tiny functional event emitter / pubsub. It offers similar event handling functionality but lacks the built-in transport layer for cross-environment communication that @storybook/channels provides.
Storybook Channel is similar to an EventEmitter. Channels are used with Storybook implementations to send/receive events between the Storybook Manager and the Storybook Renderer.
class Channel {
addListener(type, listener) {}
addPeerListener(type, listener) {} // ignore events from itself
emit(type, ...args) {}
eventNames() {}
listenerCount(type) {}
listeners(type) {}
on(type, listener) {}
once(type, listener) {}
prependListener(type, listener) {}
prependOnceListener(type, listener) {}
removeAllListeners(type) {}
removeListener(type, listener) {}
}
The channel takes a Transport object as a parameter which will be used to send/receive messages. The transport object should implement this interface.
class Transport {
send(event) {}
setHandler(handler) {}
}
Currently, channels are baked into storybook implementations and therefore this module is not designed to be used directly by addon developers. When developing addons, use the getChannel
method exported by @storybook/addons
module. For this to work, Storybook implementations should use the setChannel
method before loading addons.
import addons from '@storybook/addons';
const channel = addons.getChannel();
For more information visit: storybook.js.org
FAQs
Unknown package
The npm package @storybook/channels receives a total of 7,530,136 weekly downloads. As such, @storybook/channels popularity was classified as popular.
We found that @storybook/channels demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 11 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.
Security News
Research
Socket's threat research team has detected five malicious npm packages targeting Roblox developers, deploying malware to steal credentials and personal data.